package com.ictest.detectionflow.mobile;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 数据库辅助类。
 */
public class DatabaseHelper extends SQLiteOpenHelper
{

	/**
	 * 初始化数据库辅助类。
	 * 
	 * @param 上下文对象
	 */
	public DatabaseHelper(Context context)
	{
		// 调用基类实现
		super(context, DATABASE_NAME, null, DATABASE_VERSION);

		// 保存上下文对象
		this.m_Context = context;
	}

	@Override
	public void onCreate(SQLiteDatabase db)
	{
		// 获得元器件表创建脚本
		String sqlComponent = this.m_Context.getResources().getString(R.string.sql_create_table_component);

		// 创建元器件表
		db.execSQL(sqlComponent);

		// 获得客户信息表创建脚本
		String sqlCustomer = this.m_Context.getResources().getString(R.string.sql_create_table_customer);

		// 创建客户信息表
		db.execSQL(sqlCustomer);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
	{
		// 判断是否需要创建客户信息表
		if (oldVersion == 20121029 && newVersion == 20121120)
		{
			// 获得客户信息表创建脚本
			String sqlCustomer = this.m_Context.getResources().getString(R.string.sql_create_table_customer);

			// 创建客户信息表
			db.execSQL(sqlCustomer);
		}

		// 判断是否需要更新元器件表
		if (oldVersion == 20121120)
		{
			// 获得元器件表更新脚本
			String sqlComponent = this.m_Context.getResources().getString(R.string.sql_update_table_component_1);

			// 更新元器件信息表
			db.execSQL(sqlComponent);

			sqlComponent = this.m_Context.getResources().getString(R.string.sql_update_table_component_2);

			// 更新元器件信息表
			db.execSQL(sqlComponent);

			sqlComponent = this.m_Context.getResources().getString(R.string.sql_update_table_component_3);

			// 更新元器件信息表
			db.execSQL(sqlComponent);
		}
	}

	@Override
	public void onOpen(SQLiteDatabase db)
	{
		super.onOpen(db);
	}

	/** 上下文对象。 */
	private final Context m_Context;

	/** 数据库名称。 */
	private static final String DATABASE_NAME = "DetectionFlow";

	/** 数据库版本。 */
	// private static final int DATABASE_VERSION = 20121029;
	// private static final int DATABASE_VERSION = 20121120;
	// private static final int DATABASE_VERSION = 20130306;
	private static final int DATABASE_VERSION = 20130315;
}
